Skip to content

视频反爬虫

思路:

创建一个canvas节点和一个video节点,video不显示在DOM里。 实时把video内容绘制到canvas画布内。

html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <canvas id="canvas" width="640" height="480" style="border: 1px solid black;" ></canvas>
    <button onclick="play()" >play</button>
    <button onclick="stop()" >stop</button>
</body>
</html>
<script>
    const SRC = '../../public/【知微数据】分析,让数据变成情报-00.00.00.000-00.00.10.400.mp4';
    const canvas = document.getElementById('canvas');
    const video = document.createElement('video');
    const ctx = canvas.getContext('2d');
    const timer = null;

	// 初始化,设定视频链接,并在把第一帧画面截取给画布
	// 注:并未设置自动播放
    {
        video.src = SRC;
        video.currentTime = 0.01; // 起始帧为0的话,无画面
        video.addEventListener('canplay',()=>ctx.drawImage(video, 0, 0, canvas.width, canvas.height));
    }

	// 后台的video播放,并实时把内容绘制到canvas上
    const play = ()=>{
        video.play();
        timer = setInterval(()=>{
            ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
        }, 1000/25);
    }

	// 清除定时器
    const stop = ()=>{
        video.pause();
        clearInterval(timer);
    }

</script>